Forum des exercices du projet Zuul

Exercice 7.10

  
 
Avatar anonfirstname2 anonlastname2
Exercice 7.10
par anonfirstname2 anonlastname2, vendredi 15 février 2019, 17:56
 
  • Être capable d'expliquer en détail comment fonctionne la méthode getExitString (voir Code 7.7 dans le livre).

  • OPTIONNEL :Écrire ces explications dans le rapport.
Avatar anonfirstname51 anonlastname51
Re: 7.10
par anonfirstname51 anonlastname51, samedi 16 février 2013, 18:59
 

Bonjour, j'aurais voulu plus de détail sur ces 2 lignes de code:

Set<String> keys=exits.keySet();
for(String exit:keys)

Pour moi la seconde ligne est une condition qui va tester toutes les clés contenues dans keys et les stocker en tant que String dans exit et la première ligne corespond à l'obtention de cette liste de clés qu'on met dans keys; seulement  je ne comprends pas la partie Set<String>, je sais qu'il y a un rapport avec exit dans la condition mais ensuite je n'arrive pas à l'expliquer corectement.

Avatar anonfirstname2 anonlastname2
Re: 7.10
par anonfirstname2 anonlastname2, samedi 16 février 2013, 23:19
 

La première ligne :
Set<Type_des_clés> ma_variable = ma_HashMap.keySet();
met dans ma_variable l'ensemble des clés de ma_HashMap  (Set veut dire ensemble et fait partie des collections en Java).

La deuxième ligne :
for ( Type_des_éléments nom_d_un_élément : conteneur_de_données ) { instructions }
n'est pas une condition mais une boucle (appelée boucle for each), comme la boucle for avec les deux points-virgules, mais sans avoir besoin d'un compteur de boucle. conteneur_de_données peut être soit un tableau soit une collection de données, telle qu'un ensemble (mais il existe aussi des listes, des piles, ...). A chaque tour de boucle, nom_d_un_élément vaudra l'élément suivant dans le conteneur de données ; quand tous les éléments ont été ainsi parcourus, la boucle s'arrête.

Avatar Denis BUREAU
Re: Exercice 7.10
par Denis BUREAU, mardi 1 avril 2014, 10:48
 

Un étudiant a écrit :

Je ne comprends pas cette partie de code:

    String returnString = "sorties:";
    Set<String> keys = exits.keySet();
    for ( String exit : keys )
    returnString += " " + exit;

    return returnString;

1) Pourquoi met-on des <> entre set et keys?
2) pourquoi n'y a t il pas 3 données dans les conditions du for?

3) qu'est ce que le = dans le returnString? un simple caractère =? pourquoi "exit" ne prends pas de s à la fin du code alors qu'il en a un dans "exits.keySet()"? cela ne risque pas de créer des confusions avec les adresses?

Avatar Denis BUREAU
Re: Exercice 7.10
par Denis BUREAU, mardi 1 avril 2014, 10:57
 

1)

La variable keys doit être déclarée pour recevoir ce que retourne exits.keySet(), c'est-à-dire l'ensemble des clés de la HashMap exits. Set est la classe ensemble, mais de quel type sont les clés ? exits ayant été déclarée HashMap<String,Room>, les clés sont donc de type String, donc nous obtiendrons un ensemble de String qui se déclare par Set<String>.

2)

Il ne s'agit pas ici d'une boucle for classique, mais de ce qu'on appelle une boucle for each (POUR CHAQUE) qui permet de parcourir facilement tous les éléments d'un tableau ou d'une collection (telle qu'un ensemble). Lisez mes explications dans ma réponse à la question précédente (au-dessus de la vôtre).

3)

X += Y;  est une forme raccourcie de  X = X+Y;

La variable exit (qui est une String) n'a rien à voir avec la variable exits (qui est une HashMap<String,Room>), si ce n'est qu'en parcourant l'ensemble des clés de exits, on obtient bien une exit à chaque tour de boucle.